1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
import { createCanvas, loadImage } from "canvas";
import QRCode from "qrcode";
export async function GET({ params }) {
const { icon, text } = params;
const size = 600;
const canvas = createCanvas(size, size);
await QRCode.toCanvas(canvas, text, {
errorCorrectionLevel: "H",
width: size,
});
const ctx = canvas.getContext("2d");
const logo = await loadImage(`static/images/${icon}`);
const logoSize = size * 0.3;
ctx.drawImage(
logo,
(size - logoSize) / 2,
(size - logoSize) / 2,
logoSize,
logoSize,
);
const buffer = canvas.toBuffer("image/png");
return new Response(buffer, {
headers: {
"Content-Type": "image/png",
"Cache-Control": "public, max-age=31536000, immutable",
},
});
}
|